# app/models.py
from sqlalchemy import Column, Integer, String, Text, Boolean, DateTime, ForeignKey
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from .database import Base


class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    username = Column(String, unique=True, index=True)
    hashed_password = Column(String)
    is_admin = Column(Boolean, default=False)


class Meeting(Base):
    __tablename__ = "meetings"

    id = Column(Integer, primary_key=True, index=True)
    title = Column(String, index=True)
    # 结构化存储（JSON 或纯文本）
    content = Column(Text)
    # 新增字段：为便于检索和展示，把常用字段拆成列 —— 保持向后兼容同时便于索引
    meeting_time = Column(String, index=True, nullable=True)  # 存储字符串形式的会议时间（例如：2025-11-05 14:00）
    location = Column(String, index=True, nullable=True)
    participants = Column(Text, nullable=True)  # 可以存储逗号分隔或 JSON 数组字符串
    # Note: recorder column removed (field was removed from UI and schema)
    minutes = Column(Text, nullable=True)  # 会议纪要正文
    todos = Column(Text, nullable=True)  # 待办事项（可为换行或 JSON）
    # 存储附件列表（JSON 数组，元素为文件名或相对路径）
    attachments = Column(Text, nullable=True)
    created_by = Column(Integer, ForeignKey("users.id"))
    created_at = Column(DateTime(timezone=True), server_default=func.now())

    # 便于模板中显示作者信息
    author = relationship("User", backref="meetings")


class Resource(Base):
    __tablename__ = "resources"

    id = Column(Integer, primary_key=True, index=True)
    core_point = Column(String, index=True)  # 核心知识点
    source = Column(String, nullable=True)   # 资料来源
    material_type = Column(String, nullable=True)  # 资料类型
    category = Column(String, nullable=True)      # 资料类别（新增）
    note = Column(Text, nullable=True)       # 备注
    # 存储附件列表（JSON 数组，元素为 dict: {saved_name, orig_name, remark}）
    attachments = Column(Text, nullable=True)
    # 可选的视频链接（例如视频网站 URL）
    video_link = Column(String, nullable=True)
    created_by = Column(Integer, ForeignKey("users.id"))
    created_at = Column(DateTime(timezone=True), server_default=func.now())

    # 便于模板中显示作者信息
    author = relationship("User", backref="resources")
